﻿using Prism.Commands;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace Zhy.PrismRegion.Navigat.ViewModels
{
    public class MainWindowViewModel
    {
        public ICommand OpenViewCommand { get; set; }

        // 区域管理，需要拿到RegionManager
        IRegionManager _regionManager;
        public MainWindowViewModel(IRegionManager regionManager)
        {
            _regionManager = regionManager;

            OpenViewCommand = new DelegateCommand<string>(DoOpenView);
        }

        /// <summary>
        /// 显示指定子页面
        /// </summary>
        /// <param name="viewName">子页面名称</param>
        private void DoOpenView(string viewName)
        {
            // 关联内容区域的子页面
            //_regionManager.RegisterViewWithRegion("ViewRegion", viewName); // 这种方式无法向子页面传参
            // 打开/显示某个View的时候，希望给个参数它？
            // 上面的语句无法传参
            // 需要请求的View，先注册到容器中
            // 参数1：区域名称 参数2：子页面名称
            //_regionManager.RequestNavigate("ViewRegion", viewName);

            // 向某个View中传递特定参数，参数对接到View的ViewModel里
            //if (viewName == "ViewA")
            {
                // 可以通过导航的方式将参数信息传递到子页面
                NavigationParameters parameters = new NavigationParameters(); // 要向子页面传递的参数集合
                parameters.Add("abcd", "Hello"); // 添加要传递的参数
                // 参数1：区域名称 参数2：子页面名称 参数3：要向子页面传递的参数
                _regionManager.RequestNavigate("ViewRegion", viewName, parameters);
            }
            //else if (viewName == "ViewB")
            //    _regionManager.RequestNavigate("ViewRegion", viewName);
        }
    }
}
